home *** CD-ROM | disk | FTP | other *** search
/ Aminet 30 / Aminet 30 (1999)(Schatztruhe)[!][Apr 1999].iso / Aminet / util / wb / VisualPrefs_PT.lha / VisualPrefs_PT / VP-Developer_PT.doc < prev    next >
Text File  |  1999-02-08  |  5KB  |  121 lines

  1.  
  2.                                Apresentando
  3.  
  4.                O INTERFACE DO VISUALPREFS PARA PROGRAMADORES
  5.  
  6.                             Um trabalho em curso
  7.  
  8.  
  9. Se é um programador, pode aproveitar algumas das características do VisualPrefs.
  10.  
  11. Embora não exista ainda um API completo para o VisualPrefs já é possível
  12. utilizar as classes BOOPSI que o VisualPrefs adiciona ao sistema.
  13.  
  14. O objectivo dessas classes é permitir ao programador obter facilmente um
  15. "visual" à VisualPrefs sem ter que esperar que eu implemente uma "correcção"
  16. no VisualPrefs para a sua aplicação.  ;-)
  17.  
  18. Actualmente existe apenas uma classe:
  19.  
  20. "tbiclass" - a classe da barra de título
  21.  
  22. Esta classe proporciona as imagens mais comuns para os botões criados pelas
  23. aplicações na barra de título das suas janelas.  Exemplos disto são o botão
  24. de "iconificar" ou o botão "padlock" do DirOpus5.
  25.  
  26. Todos os programas que usem esta classe obterão o mesmo visual para os botões
  27. da barra de título se o VisualPrefs estiver a correr.  Isto é provavelmente
  28. melhor do que ter diversas versões da mesma imagem...
  29.  
  30. Pode usar a "tbiclass" como "sysiclass"; são ambas sub-classes da "imageclass".
  31. Uma imagem para a "tbiclass" pode ser criada chamando NewObject() com as
  32. segintes opções:
  33.  
  34. SYSIA_DrawInfo - Isto é absolutamente obrigatório. TEM que passar um ponteiro
  35.                  DrawInfo para a "tbiclass" ou o NewObject() falhará.
  36.  
  37. SYSIA_Which - Para especificar a imagem que pretende; actualmente existem seis
  38.               tipos de imagem:
  39.  
  40.               POPUPIMAGE    - Imagem de botão "surgir" do MUI da barra de título.
  41.               MUIIMAGE      - Imagem de botão "configuração" do MUI da barra de título.
  42.               SNAPSHOTIMAGE - Imagem de botão "instantâneo" do MUI da barra de título.
  43.               ICONIFYIMAGE  - Imagem de botão "iconificar" da barra de título.
  44.  
  45.               PADLOCKIMAGE  - Imagem do tipo do botão "padlock" do DirOpus.
  46.               TBFRAMEIMAGE  - Uma imagem de botão de barra de título vazia para
  47.                               efeitos gerais.
  48.  
  49. IA_Width, IA_Height - Estes só são reconhecidos pelo tipo TBFRAMEIMAGE;
  50.                       os restantes tipos de imagem ignoram-os e tem sempre
  51.                       o mesmo tamanho da imagem do botão de profundidade.
  52.  
  53. SYSIA_ReferenceFont - Este só é reconhecido pelo tipo TBFRAMEIMAGE;
  54.                       os restantes tipos de imagem ignoram-o e tem sempre
  55.                       a mesma altura da imagem do botão de profundidade.
  56.  
  57. Claro que se o NewObject() falhar, deve providenciar uma imagem pré-definida para
  58. os botões da sua barra de título.  No entanto, planeio editar brevemente em
  59. disquete uma versão "freeware" de imagens para a "tbiclass" que poderá incluir nas
  60. suas aplicações.  Esta classe providenciará as imagens necessárias que serão
  61. automsticamente substituídas pelas do VisualPrefs se este estiver presente.
  62. Por isso, pode manter as suas imagens pré-definidas muito simples. ;-)
  63.  
  64. É importante tomar nota de que todas as imagens da "tbiclasss" terão um valor
  65. de -1 no lado esquerdo.  Isto não deve ser modificado, deve colocar os seus
  66. botões da barra de título em concordância.  A razão para este aparentemente
  67. estranho comportamento é que as imagens dos botões da barra de título da Intuition
  68. também funcionam deste modo, e devemos tentar manter a compatibilidade com a
  69. Intuition sempre que for possível.
  70.  
  71. Assim, ajuste o tamanho dos seus botões, se necessário, para os adaptar ao tamanho
  72. das imagens devolvido pela classe.
  73.  
  74. Um exemplo de tudo isto pode ser:
  75.  
  76.    ...
  77.  
  78.    /* Criar a imagem */
  79.  
  80.    if (!(iconifyimage = NewObject(NULL,"tbiclass",SYSIA_Which,ICONIFYIMAGE,
  81.                                                   SYSIA_DrawInfo,dri,
  82.                                                   TAG_END)))
  83.    {
  84.       iconifyimage = builtin_iconifyimage;
  85.    }
  86.  
  87.    /* Utilizar a imagem */
  88.  
  89.    gad->GadgetRender = iconifyimage;
  90.    ...
  91.  
  92.    /* Libertar a imagem */
  93.  
  94.    if (iconifyimage != builtin_iconifyimage) DisposeObject(iconifyimage);
  95.  
  96.    ...
  97.  
  98. É tudo.  Por agora não tenho um verdadeiro ficheiro de inclusão, por isso,
  99. para utilizar a "tbiclass" nas suas aplicações, por favor cole as poucas
  100. linhas seguintes no início do seu código.
  101.  
  102. ---- cortar por aqui ----8<---- cortar por aqui ----8<---- cortar por aqui ----
  103.  
  104. #define POPUPIMAGE    (101)
  105. #define MUIIMAGE      (102)
  106. #define SNAPSHOTIMAGE (103)
  107. #define ICONIFYIMAGE  (104)
  108. #define PADLOCKIMAGE  (105)
  109. #define TBFRAMEIMAGE  (106)
  110.  
  111. ---- cortar por aqui ----8<---- cortar por aqui ----8<---- cortar por aqui ----
  112.  
  113. Existe já uma aplicação a usar a "tbiclass", ViNCEd por Thomas Richter.
  114.  
  115. Espero que também suporte a "tbiclass" e contribua deste modo para dar uma
  116. aparência concistente a todos os botões das barras de título usados nas
  117. aplicações.
  118.  
  119. Obrigado,
  120.                                       Massimo Tantignone (tanti@intercom.it)
  121.